home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / C / Frameworks / TransSkel 3.24 / Demos / Pascal Demos / HierMenu / HierMenu.p next >
Text File  |  1996-01-25  |  2KB  |  94 lines

  1. program HierMenu;
  2.  
  3.     uses
  4.         Types, Menus, TransSkel;
  5.  
  6.     const
  7.  
  8.         aboutAlrtRes = 1000;
  9.  
  10.         fileMenuNum = 1000;
  11.         demoMenuNum = 1001;
  12.         sub1MenuNum = 231;
  13.         sub2MenuNum = 232;
  14.         sub3MenuNum = 233;
  15.         demo2MenuNum = 1005;
  16.         sub21MenuNum = 241;
  17.         sub22MenuNum = 242;
  18.         sub23MenuNum = 243;
  19.  
  20.         quit = 1;
  21.  
  22.  
  23. { Handle selection of "About Hello..." item from Apple menu }
  24.  
  25.     procedure DoAppleMenu (item: Integer);
  26.         var
  27.             ignore: Integer;
  28.     begin
  29.         ignore := SkelAlert(aboutAlrtRes, SkelDlogFilter(nil, true), skelPositionOnParentDevice);
  30.         SkelRmveDlogFilter;
  31.     end;
  32.  
  33.  
  34. { Process selection from File menu }
  35.  
  36.     procedure DoFileMenu (item: Integer);
  37.     begin
  38.         case item of
  39.             quit: 
  40.                 SkelStopEventLoop;
  41.         end;
  42.     end;
  43.  
  44.  
  45.     procedure SetupMenus;
  46.         var
  47.             m: MenuHandle;
  48.             str: Str255;
  49.             ignore: Boolean;
  50.     begin
  51.         SkelApple('About HierMenu…', @DoAppleMenu);
  52.         m := NewMenu(fileMenuNum, 'File');
  53.         AppendMenu(m, 'Quit/Q');
  54.         ignore := SkelMenu(m, @DoFileMenu, nil, false, false);
  55.  
  56.         m := NewMenu(demoMenuNum, 'Demo');
  57.         str := 'Item 1/X;Item 2/X;Item 3/X';
  58.         str[8] := chr($1b);
  59.         str[17] := chr($1b);
  60.         str[26] := chr($1b);
  61.         AppendMenu(m, str);
  62.         SetItemMark(m, 1, char(sub1MenuNum));
  63.         SetItemMark(m, 2, char(sub2MenuNum));
  64.         SetItemMark(m, 3, char(sub3MenuNum));
  65.         ignore := SkelMenu(m, nil, nil, false, false);
  66.         m := NewMenu(sub1MenuNum, '');
  67.         AppendMenu(m, 'Subitem 1.1;Subitem 1.2;SubItem 1.3');
  68.         ignore := SkelMenu(m, nil, nil, true, false);
  69.         m := NewMenu(sub2MenuNum, '');
  70.         AppendMenu(m, 'Subitem 2.1;Subitem 2.2;Subitem 2.3');
  71.         ignore := SkelMenu(m, nil, nil, true, false);
  72.         m := NewMenu(sub3MenuNum, '');
  73.         AppendMenu(m, 'Subitem 3.1;Subitem 3.2;Subitem 3.3');
  74.         ignore := SkelMenu(m, nil, nil, true, false);
  75.  
  76.         m := GetMenu(demo2MenuNum);
  77.         ignore := SkelMenu(m, nil, nil, false, false);
  78.         m := GetMenu(sub21MenuNum);
  79.         ignore := SkelMenu(m, nil, nil, true, false);
  80.         m := GetMenu(sub22MenuNum);
  81.         ignore := SkelMenu(m, nil, nil, true, false);
  82.         m := GetMenu(sub23MenuNum);
  83.         ignore := SkelMenu(m, nil, nil, true, false);
  84.  
  85.         DrawMenuBar;
  86.     end;
  87.  
  88.  
  89. begin
  90.     SkelInit(nil);
  91.     SetupMenus;
  92.     SkelEventLoop;
  93.     SkelCleanup;
  94. end.